'''购买者选择想要的饮品,通过投币或者扫码的方式支付,支付成功后从出货口取出饮品'''
'''要求编写代码,利用函数实现具有显示饮品信息,计算销售总额等功能的程序'''
def all_goods():
    '''饮品信息'''
    goods = {'可乐':2.5,'冰红茶':3,'脉动':3.5,'红牛':6}
    return goods
def show_goods():
    '''展示饮品信息'''
    for x,y in all_goods().items():  # all_goods()函数嵌套调用
        print(f'{x}的价格:{y}元')
def total(goods_dict):
    '''计算每件商品的总价和所有购买商品的总价'''
    count = 0
    for name,num in goods_dict.items():
        pay = all_goods()[name] * num # 计算所选择的单个商品的价格
        count = count + pay
        print(f'购买{name}{num}件,花费:{pay}元')
    print('总金额为',count,'元')
def main():
    goods_dict = {}
    print('饮 品 自 动 售 货 机')
    show_goods()
    print('输入q完成购买')
    # 循环选购的商品
    while True:
        good_name = input('请输入需要购买的商品名称:')
        if good_name == 'q':
            break
        if good_name in [g_name for g_name in all_goods().keys()]:
            good_num = input('请输入购物数量:')
            if good_num.isdigit(): # isdigit() 验证字符串中所有字符是否是数字字符,返回True或者False(不识别负数和小数)
                goods_dict[good_name] = float(good_num) # 这一步就把good_name和good_num输入字典goods_dict
                for good_name,good_num in goods_dict.items():
                    print(f'{good_name},购买数量:{good_num}')
            else:
                print('商品数量不合法!')
        else:
            print('商品名称不存在!')
    total(goods_dict)
# 这段代码用于控制代码的执行方式，确保当文件被直接运行时才执行某些逻辑（如测试代码），而被导入为模块时不自动执行这些逻辑。
if __name__ == '__main__':  # 判断是否直接运行当前文件
    main()    # 如果是直接运行，则调用main函数

'''初始化阶段
创建空字典goods_dict
打印商品清单（调用show_goods()）

选购阶段
用户输入"可乐"：
验证存在性
输入数量"2"通过isdigit()验证
更新字典：goods_dict = {'可乐': 2.0}
错误地遍历整个字典打印所有已选商品

二次选购
用户输入"红牛"：
验证存在性
输入数量"1"
更新字典：goods_dict = {'可乐':2.0, '红牛':1.0}
再次遍历字典打印所有商品

结算阶段
调用total()计算：
可乐：2.0 * 2.5 = 5.0
红牛：1.0 * 6 = 6.0
累计总金额11.0元'''



